#include <iostream>
using std::cout;
using std::endl;
//引用作为函数的返回值
int number = 16;

int & func(){
    cout << "func:" << &number << endl;
    return number;
}

void test3(){
    cout << &number << endl;
    cout << &func() << endl;
}


//执行return语句时，会复制一次，但是目前不太好演示
//等后续学习完面向对象时，再给大家演示
int func2(){
    int number = 17;
    cout << "func2::" << &number << endl;
    return number;
}
//如果我们仅仅讨论的是内置数据类型
//那么两种方式区别不大，因为int本身也就只占用4字节
//即便拷贝，也是拷贝几个字节
void test(){
    cout << func() << endl;
    cout << func2() << endl;
}

void test2(){
    //func2函数的返回结果是一个临时变量
    //使用int result = 临时变量，那么肯定会再拷贝一份
    //因为如果不拷贝，那么执行完func2()函数之后，那么便会
    //被销毁】回收，result也就无法使用了
    int result = func2();
    cout << &result << endl;
}

int main()
{
    test3();
    return 0;
}

